package com.xinghou.platform.server.api.bussiness;

import com.xinghou.platform.entity.req.ListReq;
import com.xinghou.platform.entity.req.UserRegistReq;
import com.xinghou.platform.entity.resp.UserInfoResp;
import com.xinghou.platform.model.main.DateCount;
import com.xinghou.platform.model.main.LoginHistory;
import com.xinghou.platform.model.main.User;
import com.xinghou.platform.model.main.UserSignatures;
import org.springframework.dao.DataAccessException;

import java.util.List;

public interface UserInfoBusinessService {
	
	/**
	 * 查询用户信息
	 * type: 0: 全部 1:基本资料 2：兴趣标签 3: 身份 4:门店和身份 5:头像图片url
	 * @return
	 * @throws DataAccessException
	 */

	public String getxhh5code(Integer uid);

	public void recordVisitInfo(UserRegistReq userRegistReq);

	public List<UserInfoResp> getUsersSignatures(String ids);



	public void pubSignatures(UserSignatures signatures);


	//根据用户标签id获取标签描述
	public String getInterestTagsTitleOfUser(String taste);
	/**
	 * 创建用户账号 返回 0成功 1失败
	 * @return
	 * @throws DataAccessException
	 */
	public int createUserAccount(UserRegistReq userRegistReq);

	/**
	 * 获取用户信息
	 */
	public UserInfoResp getUserInfo(Integer userid);

	public UserInfoResp getUserInfo(UserRegistReq userRegist) throws DataAccessException;

	/**
	 * 更新用户基本资料 返回 0成功 1失败
	 * @param userRegist
	 * @return
	 * @throws DataAccessException
	 */
	public String updateUserInfoBase(UserRegistReq userRegist)throws DataAccessException;


	/**
	 * 更新用户基本资料 返回 0成功 1失败
	 * @param userRegist
	 * @return
	 * @throws DataAccessException
	 */
	public String updateUserPassword(UserRegistReq userRegist)throws DataAccessException;
	
	/**
	 * 更新用户兴趣信息 返回 0成功 1失败
	 * @param userRegist
	 * @return
	 * @throws DataAccessException
	 */
	public String updateUserInfoTaste(UserRegistReq userRegist)throws DataAccessException;
	
	/**
	 * 更新用户职业信息 返回 0成功 1失败
	 * @param userRegist
	 * @return
	 * @throws DataAccessException
	 */
	public String updateUserInfoJob(UserRegistReq userRegist)throws DataAccessException;
	
	/**
	 * 更新用户门店信息 返回 0成功 1失败
	 * @param userRegist
	 * @return
	 * @throws DataAccessException
	 */
	public String updateUserInfoShop(UserRegistReq userRegist)throws DataAccessException;
	
	/**
	 * 修改用户密码 返回 0成功 1失败
	 * @param userRegist
	 * @return
	 * @throws DataAccessException
	 */
	public String updateUserPwd(UserRegistReq userRegist)throws DataAccessException;
	
	/**
	 * 第三方用户信息处理 返回 0成功 1失败   
	 * 注释：用第三方账号及账号类型查询用户信息 
	 *           当未查询到用户信息时创建用户信息
	 *           当查询到用户信息时不做操作 直接返回0
	 * @param userRegist
	 * @return
	 * @throws DataAccessExcepion
	 */
	public User processUserInfoOther(UserRegistReq userRegist)throws DataAccessException;

	public User processUserMobile(UserRegistReq userRegist)throws DataAccessException;



	
	/**
	 * 上送用户的位置信息
	 * @param userRegist
	 * @return
	 */
	public String updateUserLocation(UserRegistReq userRegist);
	
	/**
	 * 更新用户手机号
	 * @param userRegist
	 * @return
	 */
	public int updateUserMobile(UserRegistReq userRegist);
	
	/**
	 * 更新用户签名
	 * @param userRegist
	 * @return
	 */
	public int updateSignatures(UserRegistReq userRegist);
	
	/**
	 * 用户账户信息查询（个人中心-我）
	 * @param userid
	 * @return
	 * @throws DataAccessException
	 */
	public UserInfoResp getUserInfo(String userid, String toUserid) throws DataAccessException;
	
	/**
	 * 查询二个用户之间的距离
	 * @param userid
	 * @param touserid
	 * @return
	 */
	public String distanceUserAndUser(String userid, String touserid);
	
	/**
	 * 修改手艺人擅长风格，入行时间
	 * @param userRegistReq
	 * @return
	 */
	public int updateUserStyle(UserRegistReq userRegistReq);
	
	/**
	 * 判断手机号码是否存在 0存在 1不存在
	 * @param phonenumber
	 * @return
	 */
	public int mobileExist(String phonenumber, String type, String secondaccount);

	/**
	 * 获取关注用户列表
	 */
	public List<UserInfoResp> getFollowUsers(Integer userid,Integer pageno,Integer pagesize);


	/**
	 * 获取我的粉丝用户列表
	 *
	 */
	public List<UserInfoResp> getFanUsers(Integer userid,Integer pageno,Integer pagesize);


	public String getRandomUser(int sex);

    public User createNewUser(User user);

	public void saveHistoryLog(LoginHistory history);

	public User getUser(Integer uid);

	public int getUserRelation(Integer userid, Integer touserid);

	public List<UserInfoResp> searchUsers(UserRegistReq userRegistReq);

	public List<UserInfoResp> searchUserByKey(Integer srcuserid,String key,int pageno,int pagesize);

	public List<UserInfoResp>  userList(ListReq listReq);

	public void closureUser(ListReq listReq);

	public void unclosureUser(ListReq listReq);

	public int getCheckMobileCount(String mobile);

	public Boolean isMobileBind(String mobile);

	public List<UserInfoResp> getHeadAndNameById(String ids);

	public void checkclosureByUserId(String userid);
	public List<String> getLastThreeDayData();
}
